/**
 * 根据输入能得到总长S, 与最大片段K, 如果为非质数, 则可以枚举每一段的长度为n 则n在[K, S]的闭区间内
 * 则在输入当中如果能拼凑出 m 个 n 且 m * n = s 即可找到答案。
 * 
 * 关键剪枝: 当
 **/
#include <bits/stdc++.h>
using namespace std;
bool vis[64];
int sticks[64];
int max_num = INT_MIN;
int nsum = 0, n;
bool flag = false;          // 表示找到一个可以解决的方案。
int t = 0;                  // 每个棍子的长度。

bool all_true()
{
    bool ret = true;
    for(int i = 0; i < n; ++i)
        ret &= vis[i]; 
    return ret;
}

// 从大到小排序
bool compare(int a, int b) 
{
    return a >= b;
}

/**
 * cm 表示当前分组
 * cur 表示当前分组当中开始选择的数的下标。
 * sum 从上一次选择累计下来的值
 * t 表示每个木棍的长度。
 **/
int dfs(int cm, int cur, int sum)
{
    if(cur >= n) return 0;
    if(cm == nsum / t) return 1;
    

    for(int i = cur; i < n; ++i)
    {
        if(vis[i]) continue;
        if(sum + sticks[i] == t)
        {
            // 满足一个分组, 去寻找下一个分组
            vis[i] = true;
            if(dfs(cm + 1, cm, 0) == 1)
            {
                return 1;
            }
            vis[i] = false;
            return 0;
        }

        // 不满足一个分组大小, 则继续在此分组当中寻找
        else if(sum + sticks[i] < t)
        {
            vis[i] = true;
            if(dfs(cm, i + 1, sum + sticks[i]) == 1)
            {
                return 1;
            }
            vis[i] = false;
            // 关键剪枝
            if(sum == 0) return 0;
            for(; i + 1 < n && sticks[i] == sticks[i + 1]; i++);
        }
    }    
    return 0;
}
int main()
{
#ifdef LOCAL
    freopen("ALGO-224.in", "r", stdin);
#endif
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    while(cin >> n && n != 0)
    {
        nsum = 0, max_num = INT_MIN, flag = false;
        for(int i = 0; i <n; ++i)
            cin >> sticks[i], nsum += sticks[i], max_num = max(sticks[i], max_num);
        sort(sticks, sticks + n, compare);
        for(int i = max_num; i <= nsum; ++i) 
        {
            if(nsum % i) continue;
            t = i;
            memset(vis, false, sizeof(vis));
            if(dfs(0, 0, 0) == 1)
            {
                cout << i << endl;
                break;
            }    
        }    
    }
    return 0;
}